package disabato_martinez.tp_cotizador.cotizacion;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;

import disabato_martinez.tp_cotizador.cliente.ClienteRepository;

@Controller
@RequestMapping(value="/cotizacion")
public class CotizacionController
{
	
	@Autowired
	private CotizacionRepository cotizacionRepository;

	@Autowired
	private ClienteRepository clienteRepository;
	
	@RequestMapping(value="/listar")
	public void listar(ModelMap modelMap, @RequestParam(value="id") Long id)
	{
		System.out.println("listar GET");
		List<Cotizacion> cotizaciones = clienteRepository.findById(id).getListaCotizaciones();
		System.out.println("El cliente tiene " + cotizaciones.size() + " cotizaciones.");
		modelMap.addAttribute("cliente", clienteRepository.findById(id));
	}
	
	@RequestMapping(value="/crear")
	public CotizacionForm crear(@RequestParam(value="id") long id)
	{
		System.out.println("crear GET");
		CotizacionForm cotizacionForm = new CotizacionForm();
		cotizacionForm.setCliente(clienteRepository.findById(id));//hacer llegar la id de cliente
		return cotizacionForm;
	}

	@RequestMapping(value="/crear", method = RequestMethod.POST)
	public String crear(@ModelAttribute CotizacionForm cotizacionForm,
			@RequestParam(value="id") Long id)
	{
		System.out.println("crear POST");
		cotizacionRepository.save(cotizacionForm.createCotizacion());
		return "redirect:/cotizacion/listar?id=" +id;
	}

	@RequestMapping(value="/editar")
	public CotizacionForm editar(@RequestParam(value="id") Long id) {
		System.out.println("editar GET");
		Cotizacion cotizacion = cotizacionRepository.findById(id);
		CotizacionForm cotizacionForm = CotizacionForm.newFrom(cotizacion);
		return cotizacionForm;
	}

	/*
	@RequestMapping(value="/editar", method = RequestMethod.POST)
	public String editar(@ModelAttribute CotizacionForm cotizacionForm) 
	{
		try 
		{
			System.out.println("crear POST");
			Cotizacion cotizacion = cotizacionRepository.findById(cotizacionForm.getId());
			cotizacionForm.actualizarCotizacion(cotizacion);
			cotizacionRepository.update(cotizacion);
			return "redirect:/cotizacion/listar";
		} 
		catch (Exception e) 
		{
			e.printStackTrace();
			throw e;
		}
	}
	*/

}
